Audio signals, like speech or music, are encoded for example to enable efficient transmission or storage of the audio signals.
Audio encoders and decoders (also known as codecs) are used to represent audio based signals, such as music and ambient sounds (which in speech coding terms can be called background noise). These types of coders typically do not utilise a speech model for the coding process, rather they use processes for representing all types of audio signals, including speech. Speech encoders and decoders (codecs) can be considered to be audio codecs which are optimised for speech signals, and can operate at either a fixed or variable bit rate.
Audio encoders and decoder are often designed as low complexity source coders. In other words able to perform encoding and decoding of audio signals without requiring highly complex processing.
An example of which is transform coding. For music signal audio encoding transform coding generally performs better than Algebraic Code Excited Linear Prediction (ACELP) technology which is better suited and directed for speech signals. Transform coding is performed by coding transform coefficients vector sub-band wise. In other words an audio signal is divided into sub-bands for which a parameter is determined and the parameters represent sub-vectors which are vector or lattice quantised.
Furthermore low complexity algorithms for speech and audio coding constitute a very relevant asset, for instance for mobile terminal based communications. Due to low storage and low complexity, while preserving coding efficiency, structured codebooks may be preferred in several state of the art speech and audio codecs, like for instance the Enhanced Voice Service (EVS) codec standardized within the Third Generation Partnership Project (3GPP).
Codebooks used within these speech and audio codecs may for instance be based on lattice structures, as described in reference “Multiple-scale leader-lattice VQ with application to LSF quantization” by A. Vasilache, B. Dumitrescu and I. Tabus, Signal Processing, 2002, vol. 82, pages 563-586, Elsevier, which is incorporated herein in its entirety by reference.
It is possible to define a lattice codebook as a union of leader classes, each of which is characterized by a leader vector. A leader vector is an n-dimensional vector (with n denoting an integer number), whose (e.g. positive) components are ordered (e.g. decreasingly). The leader class corresponding to the leader vector then consists of the leader vector and all vectors obtained through all the signed permutations of the leader vector (with some possible restrictions). It is also possible that one, some or all leader classes are respectively associated with one or more scales, and the lattice codebook is then formed as a union of scaled and/or unscaled leader classes.